Hrvatski

Otključajte moć podataka vremenskih serija pomoću prozorskih funkcija. Vodič pokriva ključne koncepte, primjere i napredne tehnike za analizu podataka.

Analitika vremenskih serija: Ovladavanje prozorskim funkcijama za uvid u podatke

Podaci vremenskih serija, koje karakterizira njihova sekvencijalna i vremenski ovisna priroda, sveprisutni su u raznim industrijama. Od praćenja cijena dionica i nadzora prometa na web stranicama do analize očitanja senzora i predviđanja prodajnih trendova, sposobnost izvlačenja smislenih uvida iz podataka vremenskih serija ključna je za donošenje informiranih odluka. Prozorske funkcije pružaju moćan i fleksibilan skup alata za izvođenje izračuna na skupu redaka koji su povezani s trenutnim retkom u tablici ili podatkovnom okviru, što ih čini neophodnima za analizu vremenskih serija.

Razumijevanje podataka vremenskih serija

Podaci vremenskih serija su niz podatkovnih točaka indeksiranih po vremenskom redoslijedu. Podatkovne točke mogu predstavljati različite metrike, kao što su:

Analiza podataka vremenskih serija uključuje identificiranje uzoraka, trendova i sezonalnosti, što se može koristiti za predviđanje budućih vrijednosti, otkrivanje anomalija i optimizaciju poslovnih procesa.

Uvod u prozorske funkcije

Prozorske funkcije, poznate i kao prozorske agregacije ili analitičke funkcije, omogućuju vam izvođenje izračuna na skupu redaka povezanih s trenutnim retkom, bez grupiranja redaka u jedan rezultatski skup kao što to čine tradicionalne agregatne funkcije (npr. SUM, AVG, COUNT). Ova je mogućnost posebno korisna za analizu vremenskih serija, gdje često trebate izračunati pomične prosjeke, kumulativne zbrojeve i druge metrike temeljene na vremenu.

Prozorska funkcija se obično sastoji od sljedećih komponenti:

  1. Funkcija: Izračun koji se treba izvršiti (npr. AVG, SUM, RANK, LAG).
  2. Klauzula OVER: Definira prozor redaka koji se koristi za izračun.
  3. Klauzula PARTITION BY (opcionalno): Dijeli podatke u particije, a prozorska funkcija primjenjuje se na svaku particiju neovisno.
  4. Klauzula ORDER BY (opcionalno): Određuje redoslijed redaka unutar svake particije.
  5. Klauzula ROWS/RANGE (opcionalno): Definira okvir prozora, što je skup redaka u odnosu na trenutni redak koji se koristi za izračun.

Ključni koncepti i sintaksa

1. Klauzula OVER()

Klauzula OVER() srce je prozorske funkcije. Ona definira prozor redaka na kojem će funkcija djelovati. Jednostavna klauzula OVER() bez argumenata smatrat će cijeli rezultatski skup prozorom. Na primjer:

Primjer u SQL-u:

SELECT
  date,
  sales,
  AVG(sales) OVER()
FROM
  sales_data;

Ovaj upit izračunava prosječnu prodaju za sve datume u tablici sales_data.

2. PARTITION BY

Klauzula PARTITION BY dijeli podatke u particije, a prozorska funkcija se primjenjuje zasebno na svaku particiju. To je korisno kada želite izračunati metrike za različite grupe unutar vaših podataka.

Primjer u SQL-u:

SELECT
  date,
  product_id,
  sales,
  AVG(sales) OVER (PARTITION BY product_id)
FROM
  sales_data;

Ovaj upit izračunava prosječnu prodaju za svaki proizvod zasebno.

3. ORDER BY

Klauzula ORDER BY određuje redoslijed redaka unutar svake particije. To je ključno za izračunavanje tekućih zbrojeva, pomičnih prosjeka i drugih metrika temeljenih na vremenu.

Primjer u SQL-u:

SELECT
  date,
  sales,
  SUM(sales) OVER (ORDER BY date)
FROM
  sales_data;

Ovaj upit izračunava kumulativni zbroj prodaje tijekom vremena.

4. ROWS/RANGE

Klauzule ROWS i RANGE definiraju okvir prozora, što je skup redaka u odnosu na trenutni redak koji se koristi za izračun. Klauzula ROWS specificira okvir prozora na temelju fizičkog broja retka, dok klauzula RANGE specificira okvir prozora na temelju vrijednosti stupca iz klauzule ORDER BY.

Primjer s ROWS:

SELECT
  date,
  sales,
  AVG(sales) OVER (ORDER BY date ROWS BETWEEN 2 PRECEDING AND CURRENT ROW)
FROM
  sales_data;

Ovaj upit izračunava pomični prosjek prodaje u posljednja 3 dana (uključujući trenutni dan).

Primjer s RANGE:

SELECT
  date,
  sales,
  AVG(sales) OVER (ORDER BY date RANGE BETWEEN INTERVAL '2' DAY PRECEDING AND CURRENT ROW)
FROM
  sales_data;

Ovaj upit izračunava pomični prosjek prodaje u posljednja 2 dana (uključujući trenutni dan). Imajte na umu da `RANGE` zahtijeva sortirani stupac koji je numeričkog ili datumskog/vremenskog tipa podataka.

Uobičajene prozorske funkcije za analizu vremenskih serija

1. Pomični prosjek

Pomični prosjek je široko korištena tehnika za ublažavanje kratkoročnih fluktuacija u podacima vremenskih serija i isticanje dugoročnih trendova. Izračunava se kao prosjek vrijednosti unutar određenog vremenskog prozora.

Primjer u SQL-u:

SELECT
  date,
  sales,
  AVG(sales) OVER (ORDER BY date ROWS BETWEEN 6 PRECEDING AND CURRENT ROW) AS moving_average_7_days
FROM
  sales_data;

Ovaj upit izračunava 7-dnevni pomični prosjek prodaje.

Primjer u Pythonu (koristeći Pandas):

import pandas as pd

# Pretpostavljajući da imate Pandas DataFrame nazvan 'sales_df' sa stupcima 'date' i 'sales'

sales_df['moving_average_7_days'] = sales_df['sales'].rolling(window=7).mean()

Primjer globalne primjene: Multinacionalni maloprodajni lanac mogao bi koristiti 30-dnevni pomični prosjek kako bi ublažio dnevne fluktuacije prodaje i identificirao temeljne prodajne trendove u različitim regijama.

2. Kumulativni zbroj

Kumulativni zbroj, poznat i kao tekući zbroj, izračunava zbroj vrijednosti do trenutnog retka. Koristan je za praćenje ukupne akumulirane vrijednosti tijekom vremena.

Primjer u SQL-u:

SELECT
  date,
  sales,
  SUM(sales) OVER (ORDER BY date) AS cumulative_sales
FROM
  sales_data;

Ovaj upit izračunava kumulativni zbroj prodaje tijekom vremena.

Primjer u Pythonu (koristeći Pandas):

import pandas as pd

# Pretpostavljajući da imate Pandas DataFrame nazvan 'sales_df' sa stupcima 'date' i 'sales'

sales_df['cumulative_sales'] = sales_df['sales'].cumsum()

Primjer globalne primjene: Međunarodna e-commerce tvrtka može koristiti kumulativnu prodaju za praćenje ukupnog prihoda ostvarenog od lansiranja novog proizvoda na različitim tržištima.

3. Lead i Lag

Funkcije LEAD i LAG omogućuju pristup podacima iz sljedećih, odnosno prethodnih redaka. Korisne su za izračunavanje promjena u odnosu na prethodno razdoblje, identificiranje trendova i usporedbu vrijednosti u različitim vremenskim razdobljima.

Primjer u SQL-u:

SELECT
  date,
  sales,
  LAG(sales, 1, 0) OVER (ORDER BY date) AS previous_day_sales,
  sales - LAG(sales, 1, 0) OVER (ORDER BY date) AS sales_difference
FROM
  sales_data;

Ovaj upit izračunava razliku u prodaji u usporedbi s prethodnim danom. Funkcija `LAG(sales, 1, 0)` dohvaća vrijednost prodaje iz prethodnog retka (pomak 1), a ako prethodni redak ne postoji (npr. prvi redak), vraća 0 (zadanu vrijednost).

Primjer u Pythonu (koristeći Pandas):

import pandas as pd

# Pretpostavljajući da imate Pandas DataFrame nazvan 'sales_df' sa stupcima 'date' i 'sales'

sales_df['previous_day_sales'] = sales_df['sales'].shift(1)
sales_df['sales_difference'] = sales_df['sales'] - sales_df['previous_day_sales'].fillna(0)

Primjer globalne primjene: Globalna zrakoplovna tvrtka može koristiti funkcije lead i lag za usporedbu prodaje karata za istu rutu u različitim tjednima i identificiranje potencijalnih fluktuacija potražnje.

4. Rank i Dense Rank

Funkcije RANK() i DENSE_RANK() dodjeljuju rang svakom retku unutar particije na temelju navedenog redoslijeda. RANK() dodjeljuje rangove s prazninama (npr. 1, 2, 2, 4), dok DENSE_RANK() dodjeljuje rangove bez praznina (npr. 1, 2, 2, 3).

Primjer u SQL-u:

SELECT
  date,
  sales,
  RANK() OVER (ORDER BY sales DESC) AS sales_rank,
  DENSE_RANK() OVER (ORDER BY sales DESC) AS sales_dense_rank
FROM
  sales_data;

Ovaj upit rangira vrijednosti prodaje u padajućem redoslijedu.

Primjer globalne primjene: Globalno online tržište može koristiti funkcije rangiranja za identifikaciju najprodavanijih proizvoda u svakoj zemlji ili regiji.

Napredne tehnike i primjene

1. Kombiniranje prozorskih funkcija

Prozorske funkcije mogu se kombinirati za izvođenje složenijih izračuna. Na primjer, možete izračunati pomični prosjek kumulativnog zbroja.

Primjer u SQL-u:

SELECT
  date,
  sales,
  AVG(cumulative_sales) OVER (ORDER BY date ROWS BETWEEN 6 PRECEDING AND CURRENT ROW) AS moving_average_cumulative_sales
FROM
  (
    SELECT
      date,
      sales,
      SUM(sales) OVER (ORDER BY date) AS cumulative_sales
    FROM
      sales_data
  ) AS subquery;

2. Korištenje prozorskih funkcija s uvjetnom agregacijom

Možete koristiti prozorske funkcije u kombinaciji s uvjetnom agregacijom (npr. koristeći izraze CASE) za izvođenje izračuna temeljenih na specifičnim uvjetima.

Primjer u SQL-u:

SELECT
  date,
  sales,
  AVG(CASE WHEN sales > 100 THEN sales ELSE NULL END) OVER (ORDER BY date ROWS BETWEEN 6 PRECEDING AND CURRENT ROW) AS moving_average_high_sales
FROM
  sales_data;

Ovaj upit izračunava pomični prosjek prodaje samo za dane kada je prodaja veća od 100.

3. Dekompozicija vremenskih serija

Prozorske funkcije mogu se koristiti za dekompoziciju vremenske serije na njezine komponente: trend, sezonalnost i rezidual. To uključuje izračunavanje pomičnih prosjeka za procjenu trenda, identificiranje sezonskih uzoraka, a zatim oduzimanje trenda i sezonskih komponenti kako bi se dobili reziduali.

4. Otkrivanje anomalija

Prozorske funkcije mogu se koristiti za otkrivanje anomalija u podacima vremenskih serija izračunavanjem pomičnih prosjeka i standardnih devijacija. Podatkovne točke koje se nalaze izvan određenog raspona (npr. +/- 3 standardne devijacije od pomičnog prosjeka) mogu se označiti kao anomalije.

Praktični primjeri u raznim industrijama

1. Financije

2. Maloprodaja

3. Proizvodnja

4. Zdravstvo

Odabir pravog alata

Prozorske funkcije dostupne su u različitim alatima za obradu podataka i programskim jezicima, uključujući:

Odabir alata ovisi o vašim specifičnim potrebama i tehničkom znanju. SQL je prikladan za podatke pohranjene u relacijskim bazama podataka, dok su Python i Spark fleksibilniji za obradu velikih skupova podataka i izvođenje složenih analiza.

Najbolje prakse

Zaključak

Prozorske funkcije su moćan alat za analizu vremenskih serija, omogućujući vam izračun pomičnih prosjeka, kumulativnih zbrojeva, lead/lag vrijednosti i drugih metrika temeljenih na vremenu. Ovladavanjem prozorskim funkcijama možete otključati vrijedne uvide iz podataka svojih vremenskih serija i donositi informiranije odluke. Bilo da analizirate financijske podatke, podatke o prodaji, senzorske podatke ili podatke o web prometu, prozorske funkcije mogu vam pomoći identificirati uzorke, trendove i anomalije koje bi bilo teško otkriti tradicionalnim tehnikama agregacije. Razumijevanjem ključnih koncepata i sintakse prozorskih funkcija te slijedeći najbolje prakse, možete ih učinkovito iskoristiti za rješavanje širokog spektra stvarnih problema u različitim industrijama.